package srzy.socket

import srzy.common.Logging

object ExceptionHandle extends Logging {

  def format(cause: String, method: List[String]): String = {
    val sb = new StringBuffer()
    sb.append("\n")
    sb.append("发生这种事情我和我的小伙伴都惊呆了,此错误是由" + cause + "造成的" + "\n")
    sb.append("请按照下列步骤检查此问题:" + "\n")
    sb.append(method.zipWithIndex.map(e => (e._2 + 1) + "." + e._1).mkString("\n") + "\n")
    //    sb.append("如果还不能解决问题,请联系深圳天源迪科信息技术股份有限公司驻天津现场的陈工解决问题" + "\n")
    //    sb.append("邮箱:chenhb@tydic.com" + "\n")
    sb.toString()
  }

  def smDCCSocketExceptionDeal = {
    val err = format("SM侧DCC连接错误", List(
      "检查SM是否启动",
      "检查连接SM的端口是否配置正确",
      "检查打开查看的配置文件路径是否正确",
      "如果以上都没有问题,请尝试重新初始化并启动SM程序"))
    logger.error(err)
    sys.exit
  }

  def smDCCSocketConnectExceptionDeal = {
    val err = format("SM侧DCC不能成功建立连接", List(
      "检查SM是否启动",
      "检查连接SM的端口是否配置正确",
      "检查打开查看的配置文件路径是否正确"))
    logger.error(err)
    sys.exit
  }

  def rbSocketExceptionDeal(trend: Symbol) = {
    val err = format("RB侧" + trend + "连接错误", List(
      "检查RB是否启动",
      "检查连接RB的端口是否配置正确",
      "检查打开查看的配置文件路径是否正确"))
    logger.error(err)
    sys.exit
  }

  def RBServerCreateExceptionDeal = {
    val err = format("RB服务端建立错误", List(
      "检查自动化程序是否已经启动",
      "检查配置中的服务端口号是否被占用",
      "检查打开查看的配置文件路径是否正确"))
    logger.error(err)
    sys.exit
  }

  def RBServerAcceptExceptionDeal = {

    val err = format("接受SM端RB连接错误", List(
      "检查SM的RB连接端口配置是否正确",
      "检查SM是否启动"))
    logger.error(err)
    sys.exit
  }

  def RBServerClientCreateExceptionDeal = {
    val err = format("RB服务侧连接错误", List(
      "检查RB是否已经启动",
      "检查RB是否启动正常",
      "配置中端口是否和RB对应端口一致",
      "重启RB"))
    logger.error(err)
    sys.exit
  }

  def SMAuthenticationExceptionDeal = {
    val err = format("SM发生认证失败", List(
      "尝试重新启动SM程序",
      "尝试重新初始化DCC组件,然后重新启动SM程序",
      "重复以上步骤"))
    logger.error(err)

    sys.exit
  }

}